package daoImpl;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.jdom.Element;

import utils.XmlDefault;
import bean.Inscription;
import bean.Resultat;
import bean.Sport;
import dao.InscriptionDao;
import dao.ResultatDao;
import dao.SportDao;

public class ResultatDaoImpl extends XmlDefault implements ResultatDao {

	public ResultatDaoImpl(String nomFichier){
		super(nomFichier);
	}
	public ResultatDaoImpl(){
		super("src/xml/resultat.xml");
	}
	
	@SuppressWarnings({ "rawtypes"})
	@Override
	public Resultat getResultat(int id) {
		Iterator i = getRacine().getChildren("resultat").iterator();
		SportDao sportDao = new SportDaoImpl();
		InscriptionDao inscriptionDao = new InscriptionDaoImpl();
		while(i.hasNext()){
			Element courant = (Element)i.next();
			if(courant.getChild("id").getText().equals(String.valueOf(id)))
				return new Resultat(id,
							sportDao.getSport(Integer.parseInt(courant.getChildText("sport"))),
							inscriptionDao.getInscription(Integer.parseInt(courant.getChildText("inscription"))),
							courant.getChildText("temps"),
							courant.getChildText("distance"));
		}
		return null;
	}

	@SuppressWarnings("rawtypes")
	@Override
	public List<Resultat> getResultatBySport(Sport sport) {
		Iterator i = getRacine().getChildren("resultat").iterator();
		SportDao sportDao = new SportDaoImpl();
		InscriptionDao inscriptionDao = new InscriptionDaoImpl();
		List<Resultat> resultat = new ArrayList<Resultat>();
		while(i.hasNext()){
			Element courant = (Element)i.next();
			if(courant.getChild("sport").getText().equals(String.valueOf(sport.getId())))
				resultat.add(new Resultat(Integer.parseInt(courant.getChildText("id")),
							sportDao.getSport(Integer.parseInt(courant.getChildText("sport"))),
							inscriptionDao.getInscription(Integer.parseInt(courant.getChildText("inscription"))),
							courant.getChildText("temps"),
							courant.getChildText("distance")));
		}
		return resultat;
	}

	@SuppressWarnings("rawtypes")
	@Override
	public List<Resultat> getResultatByInscription(Inscription inscription) {
		Iterator i = getRacine().getChildren("resultat").iterator();
		SportDao sportDao = new SportDaoImpl();
		InscriptionDao inscriptionDao = new InscriptionDaoImpl();
		List<Resultat> resultat = new ArrayList<Resultat>();
		while(i.hasNext()){
			Element courant = (Element)i.next();
			if(courant.getChild("inscription").getText().equals(String.valueOf(inscription.getId())))
				resultat.add(new Resultat(Integer.parseInt(courant.getChildText("id")),
							sportDao.getSport(Integer.parseInt(courant.getChildText("sport"))),
							inscriptionDao.getInscription(Integer.parseInt(courant.getChildText("inscription"))),
							courant.getChildText("temps"),
							courant.getChildText("distance")));
		}
		return resultat;
	}
}
